package fiuba.algo3.gpschallenge.gui;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JPanel;

import fiuba.algo3.gpschallenge.Controlador.Controlador;
import fiuba.algo3.gpschallenge.modelo.Juego;
import fiuba.algo3.gpschallenge.modelo.dificultad.Dificultad;

import javax.swing.JLabel;

import java.awt.SystemColor;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.SwingConstants;
import javax.swing.JButton;

public class PanelGanaste extends JPanel {
	
	private final int ALTO = 350;
	private final int ANCHO = 700;
	private Juego modelo;
	private Controlador control;
	private Agregable interfazAgregable;
	
	public PanelGanaste(Agregable interfazM, Juego modelo, Controlador control) {
		setBackground(SystemColor.textHighlightText);
		interfazAgregable = interfazM;
		this.modelo = modelo;
		this.control = control;
		setPreferredSize(new Dimension(ANCHO, ALTO));
		setLayout(null);
		
		JLabel ganasteLabel = new JLabel("\u00A1 Ganaste !");
		ganasteLabel.setForeground(new Color(34, 139, 34));
		ganasteLabel.setHorizontalAlignment(SwingConstants.CENTER);
		ganasteLabel.setFont(new Font("Arial Black", Font.BOLD, 30));
		ganasteLabel.setBounds(208, 30, 260, 52);
		add(ganasteLabel);
		
		int movimientosSobrantes = modelo.getDificultad().getCantidadMaximaDeMovimientos() - modelo.getJugador().getMovimientos();
		JLabel movSobrantesLabel = new JLabel("Te sobraron " + movimientosSobrantes + " movimientos" );
		movSobrantesLabel.setFont(new Font("Arial Black", Font.PLAIN, 12));
		movSobrantesLabel.setHorizontalAlignment(SwingConstants.CENTER);
		movSobrantesLabel.setBounds(112, 105, 461, 26);
		add(movSobrantesLabel);
		
		int puntajeObtenido = movimientosSobrantes * (modelo.getDificultad().getMultiplicadorDeDificultad());
		JLabel puntajeObtenidoLabel = new JLabel("Obtuviste un puntaje de " + puntajeObtenido + " puntos");
		puntajeObtenidoLabel.setForeground(new Color(60, 179, 113));
		puntajeObtenidoLabel.setHorizontalAlignment(SwingConstants.CENTER);
		puntajeObtenidoLabel.setFont(new Font("Arial Black", Font.PLAIN, 12));
		puntajeObtenidoLabel.setBounds(112, 142, 461, 26);
		add(puntajeObtenidoLabel);
		
		JButton jugarOtraVezBoton = new JButton("Jugar otra vez");
		jugarOtraVezBoton.setForeground(SystemColor.window);
		jugarOtraVezBoton.setFont(new Font("Arial Black", Font.BOLD, 15));
		jugarOtraVezBoton.setBackground(SystemColor.activeCaption);
		jugarOtraVezBoton.setBounds(256, 213, 172, 40);
		add(jugarOtraVezBoton);
		jugarOtraVezBoton.addActionListener (new botonComenzarPartidaListener());
	}
	
	
	
	private void cargarPanelJuegoNuevo() {
		//se instancia el juego nuevo.
		this.modelo.resetearJuego();
		this.control=new Controlador(modelo);
		
		interfazAgregable.limpiarVentana();
		PanelSuperiorJuego panelSuperiorJuego = new PanelSuperiorJuego(this.interfazAgregable, this.modelo, this.control);	
		
		interfazAgregable.agregarComponente(panelSuperiorJuego, BorderLayout.NORTH);
		PanelJuegoNuevo panelJuegoNuevo = new PanelJuegoNuevo(this.interfazAgregable, this.modelo, this.control);
		interfazAgregable.agregarComponente(panelJuegoNuevo, BorderLayout.CENTER);
	}
	
	
	class botonComenzarPartidaListener implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent e){
			cargarPanelJuegoNuevo();
		}
	}
}
